package designpattern.visitor.ast;

import java.util.Stack;

import com.github.javaparser.StaticJavaParser;
import com.github.javaparser.ast.CompilationUnit;

public class UnusedVariableVisitorTest {
    public static void main(String[] args) {
        // 测试代码：包含未使用的变量
        String testSource = "class TestClass {\n" +
                "    public void testMethod() {\n" +
                "        int a = 10;  // 使用的变量\n" +
                "        int b = 20;  // 未使用的变量\n" +
                "        int c = 30;  // 未使用的变量\n" +
                "        System.out.println(a);\n" +
                "        \n" +
                "        // 嵌套作用域中的变量\n" +
                "        for (int i = 0; i < 5; i++) {\n" +
                "            int j = 100;  // 未使用的变量\n" +
                "            System.out.println(i);\n" +
                "        }\n" +
                "    }\n" +
                "    \n" +
                "    public void anotherMethod() {\n" +
                "        String name = \"test\";  // 未使用的变量\n" +
                "        int value = 42;         // 使用的变量\n" +
                "        System.out.println(value);\n" +
                "    }\n" +
                "}";

        // 解析源代码
        CompilationUnit cu = StaticJavaParser.parse(testSource);

        // 创建并运行未使用变量访问者
        UnusedVariableVisitor visitor = new UnusedVariableVisitor();
        System.out.println("开始检测未使用的变量...");

        // 创建栈对象并传递给访问者
        Stack<MethodVariables> stack = new Stack<>();
        visitor.visit(cu, stack);
        System.out.println("检测完成。");

    }
}